package com.zxl.designpattern.behavioral.responsibilitychain;

/**
 * 抽象处理者，抽象帖子处理器
 * 实现了基本的责任链功能，维护了下一个处理器的引用
 */
public abstract class AbstractPostHandler implements PostHandler {

    // 下一个处理器
    private PostHandler nextHandler;

    @Override
    public PostHandler setNext(PostHandler nextHandler) {
        this.nextHandler = nextHandler;
        return nextHandler;
    }

    @Override
    public boolean handle(Post post) {
        if (doHandle(post)) {
            if (nextHandler != null) {
                return nextHandler.handle(post);
            }
            return true; // 没有下一个处理器，处理成功
        }
        return false; // 当前处理器终止了处理
    }

    /**
     * 具体的处理逻辑，由子类实现
     * @param post 要处理的帖子
     * @return 处理结果，true表示继续处理，false表示终止处理
     */
    protected abstract boolean doHandle(Post post);
}    